const Diary = require('../models/Diary');

// 创建日记
const createDiary = async (req, res) => {
  try {
    const { user_id, title, content, mood, tags = [], media = [] } = req.body;

    // 验证必要字段
    if (!user_id || !title || !content) {
      return res.status(400).json({ error: '请提供用户ID、标题和日记内容' });
    }

    // 创建日记
    const diary = await Diary.create(user_id, title, content, mood, JSON.stringify(tags), JSON.stringify(media));

    res.status(201).json(diary);
  } catch (err) {
    console.error('创建日记错误:', err);
    res.status(500).json({ error: '创建日记失败' });
  }
};

// 获取日记
const getDiary = async (req, res) => {
  try {
    const { id } = req.params;

    // 获取日记
    const diary = await Diary.findById(id);
    if (!diary) {
      return res.status(404).json({ error: '日记不存在' });
    }

    res.json(diary);
  } catch (err) {
    console.error('获取日记错误:', err);
    res.status(500).json({ error: '获取日记失败' });
  }
};

// 获取用户的所有日记
const getUserDiaries = async (req, res) => {
  try {
    const { userId } = req.params;

    // 获取用户的所有日记
    const diaries = await Diary.findByUserId(userId);

    res.json(diaries);
  } catch (err) {
    console.error('获取用户日记错误:', err);
    res.status(500).json({ error: '获取用户日记失败' });
  }
};

// 更新日记
const updateDiary = async (req, res) => {
  try {
    const { id } = req.params;
    const { title, content, mood, tags = [], media = [] } = req.body;

    // 检查日记是否存在
    const existingDiary = await Diary.findById(id);
    if (!existingDiary) {
      return res.status(404).json({ error: '日记不存在' });
    }

    // 更新日记
    const diary = await Diary.update(id, title, content, mood, JSON.stringify(tags), JSON.stringify(media));

    res.json(diary);
  } catch (err) {
    console.error('更新日记错误:', err);
    res.status(500).json({ error: '更新日记失败' });
  }
};

// 删除日记
const deleteDiary = async (req, res) => {
  try {
    const { id } = req.params;

    // 检查日记是否存在
    const existingDiary = await Diary.findById(id);
    if (!existingDiary) {
      return res.status(404).json({ error: '日记不存在' });
    }

    // 删除日记
    await Diary.delete(id);

    res.json({ message: '日记删除成功' });
  } catch (err) {
    console.error('删除日记错误:', err);
    res.status(500).json({ error: '删除日记失败' });
  }
};

module.exports = {
  createDiary,
  getDiary,
  getUserDiaries,
  updateDiary,
  deleteDiary
};